Color ink jet printers have been commercially available at least since 1988, with the introduction of the PaintJet printer by the Assignee of this application. A color ink jet printer produces high quality color graphics at high resolution, using a color ink jet print engine. Initially, the PaintJet printer used eight colors, at 180 dots per inch resolution to enable selection from a palette of 330 colors. While this capability was satisfactory for original document production, when such a printer was required to provide accurate reproduction of color images produced by a personal computer, additional color palette capabilities were required.
Eight bit values (bytes) are used by personal computers (PC's) to designate primary colors. To produce secondary colors, a PC uses combinations of the eight bit values to control the computer's display device (e.g. a color CRT). A three byte (i.e. 24 bit) value can represent 2.sup.24 different color values, which color values can be reproduced by appropriate control of the CRT's color guns. When, however, a color ink jet printer is called upon to accurately reproduce that many color values, extensive color processing is required that adds significantly to the execution time of the printer.
In order to reproduce a received color value, a color ink jet printer must convert the color value into a color command that is recognized by the ink jet printer engine. It was early realized that it was impractical to produce a color table map that mapped all 2.sup.24 possible PC-generated input colors to ink jet engine color codes. As a result, most early color ink jet drivers employed a cache scheme that was combined with a color table/map to accomplish the conversion. The procedures employed by the prior art color ink jet printers will be better understood by referring to FIGS. 1 and 2.
In FIG. 1, a high level block diagram illustrates a color ink jet printer 10 and a connected personal computer (PC) 12. PC 12 generated three byte color values to enable display 14 to display any of 2.sup.24 colors. If hard copy was required of the displayed image, a three byte value 16 defining red, green, and blue values, would be transferred as a PC-RGB value over interface connection 18 to PC-RGB register 20 in printer 10. A microprocessor 22 in printer 10 would then truncate the received PC-RGB value into a cache address and would store the address value in a cache address register 24. The truncation action used only the four least significant bits of each byte to make up a 12 bit address value. That address value would then be utilized to address a color cache 26 to determine if, at that address, a Source RGB value was stored that matched the value in PC-RGB register 20. If the color values matched, a corresponding "Destination" RGB value was accessed from the same address in color cache 26 and was employed by microprocessor 22 to control color print engine 28. If no match was found, the value in PC-RGB register 20 would be fed to a color map 30.
It will be understood that employing only the four least significant bits of each of the red, green and blue bytes in PC-RGB value 16 allowed many possible addresses (2.sup.12) to be ignored. Thus, at any designated address, there was a substantial possibility that the Source RGB value 42 would not match the PC-RGB value. In such cases, resort to color map 30 became necessary. To preserve memory space, color map 30 only contained a limited number of selected color values and corresponding color print engine control values. As a result, if a received PC-RGB value was not found in color map 30 (as was likely), an interpolation procedure was executed using bracketing color values from color map 30. This action, while enabling an interpolated color print engine control value to be determined, was time consuming and slowed the performance of color ink jet printer 10.
In FIG. 2, a schematic illustrates further detail of the above-described procedure employed by color ink jet printer 10 in response to a received PC-RGB value 16. Microprocessor 22 would access the lower-most four significant bits of each of the red, green, and blue bytes to create a 12 bit concatenated address value 40. Address value 40 was then used to access one of 2.sup.12 (i.e. 4096) positions within color cache 26.
Color cache 26 contained two entries at each 12 bit address, i.e., a Source RGB value 42 comprising three eight bit bytes of red, green, and blue values and an associated "Destination" color value which also comprised three color value bytes, which color values were employed to control color print engine 28 (FIG. 1). Different Destination color values were required due to the fact that color print engine 28 operated in a "dither" mode to reproduce PC-RGB color values. The dither mode, in essence, calls for the interspersal of color dots of plural color values, which when viewed from a distance, appear to reproduce the desired PC-RGB value.
Initially (decision box 46), if it was determined that Source RGB value entry 42 was equal to a received PC-RGB value, Destination color value 44 was returned to color print engine 28 (box 48). If however, Source RGB value 42 was found not to match the PC-RGB value, then color map 30 was accessed at a Source RGB color value that most closely matched the value in PC-RGB register 20. An interpolation procedure then obtained a Destination color value to be used to control color print engine 28 (box 50).
To update color cache 26 (box 52), the Source RGB and Destination color values were replaced at the previously accessed address, as follows: the value in PC-RGB register 20 replaced Source RGB value 42 at the address and the interpolated Destination color value replaced Destination color value 44.
As a result of the described replacement procedure, color cache 26 was continually updated with newly interpolated values. Under worst case conditions, employing three byte PC-RGB values, cache "hit rates" (i.e., matches) between Source RGB values and PC-RGB values were approximately 16%. Under best case conditions, cache hit rates exceeded 50%. It was clear that cache hit rates could be improved significantly by increasing cache size. Thus, a 15 bit address size could enable a worst case hit rate of over 30% to be achieved. However, such an increased size cache would require 8 times the memory of color cache 26 and would be too costly.
Accordingly, it is an object of this invention to provide a color printer with an efficient cache system for having a high probability of matching a received PC RGB value with a stored Source RGB value.
It is another object of this invention to provide an improved color cache system for a color ink jet printer wherein a higher percentage of cache hits is achieved without requiring an expanded cache size over that used in prior art printers.
It is yet another object of this invention to provide a color ink jet printer that exhibits a higher print speed as a result of improved color cache hits by received PC-RGB color values.